Repository navigation
Implement exact-parent authored graph effects - #921
Conversation
|
Important Review skippedToo many files! This PR contains 102 files, which is 2 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry. ⚙️ Run configuration
⛔ Files ignored due to path filters: 12
📒 Files selected for processing: 102
You can disable this status message by setting the
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…nto feat/authored-effect-bridge
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review |
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
The user confirmed that there are no existing saved histories and directed a single current version of each structure, format and implementation in main crates. Historical versions may exist only in separate upgrade/migration tools. This supersedes the V1-preservation proposal: the parallel V1/V2 catalogs currently on this branch must be replaced before this draft is ready. Commit 48d2d8a records the rule in contributor guidance and current architecture documentation; the plan now requires a coordinated compiler/runtime/consumer cutover. No additional parallel grant-admission path has been added. |
|
Handover: at James's direction (2026-10-20), Claude session jim-0b now owns #921 as its single writer, to finish the authored-effect bridge so Jim's Edict-authored rope can run in a real Echo Tick with WAL. Codex: please don't push to |
Brings the bridge up to Echo main (60 commits). Test fixtures layer main's state-configuring helper over the bridge's attachment helper so both callers keep working, and both test blocks are kept. CHANGELOG takes main's restructured Unreleased section and adds only the bridge's own Changed and Added entries.
The bridge's additions to GeneratedRules.md failed verify-local's prettier --check; formatting only.
The bridge changes echo-edict-provider-lowerer's source, so the checked lowerer component no longer matched its designated build. G4's two independently provisioned linux/amd64 candidates (det-gates run 39517396062 on 72007b4) are byte-identical: 489,413 bytes, SHA-256 3094faa6d7ba1641e5417e310a2061a0e1e981da571c5f035d28c1c11f41811a. - Approved lowerer identity updated, then promoted through xtask provider-lowerer-component promote (two distinct files, exact equality, approved digest, component and world admission). - Package-local assets and the provider package regenerated to a fixed point; assets --check-package-list, package --check and artifacts --check pass. The verifier is unchanged. - Provider identity is now sha256:ccf92499...; the golden provider digest, raw manifest SHA-256 and package artifact SHA-256 in the echo-wesley-gen tests follow the generated bytes (nothing else in those tests changes). echo-wesley-gen: 210 passed. - Component and provider READMEs state the new size and digest.
Decision (James, 2026-10-21): the six shared echo.dpo@1 runtime intrinsics are typed by Echo-owned ABI coordinates, not application type names, because Echo's single provider catalog cannot name any application's types. - runtime_abi::contract names each intrinsic's ABI input and result coordinates; only these exact identities get the rule, and a matching shape never selects an intrinsic. - intrinsic_contract requires the catalog to name those coordinates for a runtime intrinsic, keeps exact name agreement for every other intrinsic, and binds each exported read failure to the effect's own declared input type while the catalog failure carries the ABI input. - Application types keep nominal identity; runtime_abi's existing bounded-representation predicates decide conformance (exact 32-byte identities, bounded atomBytes up to 16 MiB, exact field membership, empty mutation result). - GeneratedRules.md records the rule and the normative six-contract table. Tests: abi_conformance covers renamed application types accepted by the same catalog, catalogs naming application types or another intrinsic's ABI refused, maximum-bounded and 31-byte identities refused, missing, renamed and extra fields refused, smaller payload maxima accepted and over-ceiling or nonzero-minimum payloads refused, non-empty results refused, and read failures that lose their tie to the effect's input refused. warp-core: 2182 passed; clippy clean.
… configuration Decision (James, 2026-10-21): the effect configuration declares the requested authority profile, as fixed-operation configurations already do, so the lowerer and the independent verifier derive it from the same bound bytes. - The edict-effect-program/v1 configuration requires a nonempty authorityProfile label (CDDL echo-nonempty-tstr, as for fixed operations); absent, empty or non-text labels refuse. - encode_effect_publication no longer takes a caller-supplied identity; authority_profile_identity is the existing echo:operation-profile:v1 label digest of that field, the only source on the public route. - GeneratedRules.md states that the digest names a label, not a permission manifest: the owner's admission policy and the runtime's program, grant, footprint and permission checks decide what a package may do. Tests: the identity equals an independently written digest of the configured label and follows a changed label; missing, empty, integer and byte labels refuse in the factory and in the provider schema. The provider corpus, assets and package are regenerated (provider sha256:fa476bf1...); the three golden identities follow the generated bytes. Lowerer and echo-wesley-gen (210) tests pass; clippy clean.
… kind The mutation ABI required the catalog to declare effectKind "write", a value the provider's effect-kind vocabulary (read, create, ensure, replace, ...) cannot produce, so no generated catalog could satisfy it. Each mutation now requires the kind naming what it does: create for create-node, ensure for ensure-node and ensure-edge, replace for replace-atom and replace-edge. writeClass stays write. Stricter than before: one mutation can no longer claim another's kind. Test: each_mutation_declares_its_own_effect_kind refuses write, read, delete and a crossed kind; package tests 90 passed; clippy clean.
Edict's frozen intrinsic ABI (edict-common.cddl) allows writeClass read, create, ensure, append, replace, delete or custom; it has no "write". A provider-generated catalog therefore cannot declare the "write" class the mutation ABI required. Each mutation's catalog and adapter write class now equals its effect kind: create for create-node, ensure for ensure-node and ensure-edge, replace for replace-atom and replace-edge. Test: each_mutation_write_class_is_its_effect_kind refuses write, read and delete for all five; package tests 91 passed; clippy clean.
…ffect package's obstruction header Failure names (ruling 2, option i). On the authored route the catalog names echo.dpo@1.node-atom-read's failures with Edict ABI identifiers: atomMissing, atomRequired, atomTypeMismatch, atomByteBoundExceeded. One Echo-owned table (edict_effects::failure_names), keyed by intrinsic and catalog name together, pins each to the runtime tag Echo records (echo.atom-missing/v1, ...). The read ABI check requires exactly that set with its authority classes, and execution translates the lowered step's arms through the table before matching a raised tag, refusing missing, unknown, repeated or tag-spelled names with no pass-through. Application aliases stay in the adapter: Jim's `missing` maps to atomMissing, which Echo records as echo.atom-missing/v1. The bounded-read route keeps its runtime-tag mappings. Test helpers derive the authored route's adapter and Target IR from the captured ones by renaming mapping targets, the only change Edict makes for an identifier-named adapter. Obstruction header (ruling 3, option 3). An authored effect package no longer carries obstruction_coordinate; its embedded exports declare every obstruction and admission still checks each arm's declaration and authority. Compatibility: effect_publication.rs, the edict-effect-program kind and its retained control exist only on this unreleased branch (none reached main or a tag), so the effect shape is amended in place. The shared echo.operation-package/v1 decoder already varies by program kind (lawpack binding); it now also requires the header for fixed-profile packages, which main publishes, and forbids it for effect packages, so fixed-profile bytes and identities are unchanged. The provider CDDL moves the field from the shared group to the anchored variant, the lowerer's EffectPublicationInput drops it, and the retained current-effect publication controls are regenerated and pinned to the serializer by a new lowerer test (they were already stale: they predated the derived authority identity). Also narrows receipt_correlations_for_current_basis to the features of its only non-test caller, removing a dead-code warning from trusted_runtime builds. Provider package assets regenerated to a fixed point; golden digests and the lowerer's pinned provider-schema SHA-256 follow. The lowerer component source changed, so its promotion follows from G4.
The effect publication and provider-schema changes alter echo-edict-provider-lowerer's source, so the checked lowerer component no longer matched its designated build. G4's two independently provisioned linux/amd64 candidates (det-gates run 39585969546 on 8ad0ffa) are byte-identical: 489,413 bytes, SHA-256 6880fe894c151bfe28257156e5f8b721428fb06af435889a72ff401e7273cea2. The verifier candidates equal the checked verifier, which is unchanged. - Approved lowerer identity updated, then promoted through xtask provider-lowerer-component promote (two distinct files, exact equality, approved digest, component and world admission). - Package-local assets and the provider package regenerated to a fixed point; artifacts --check, package --check and assets --check-package-list pass. - Provider identity is now sha256:6287e569...; the golden provider digest, raw manifest SHA-256 and package artifact SHA-256 in the echo-wesley-gen tests follow the generated bytes. - Component and provider READMEs state the new digest; the size is unchanged.
The authored-operation-effects architecture still specified a parallel ExecutableOperationPackageV2 (closure-v2, program-v2-effect, invocation-v2-effect, v2 domains and installation records) and v2 batch digest domains. The code has one package, program, invocation, and installation format under their v1 schema strings and domains, with the program kind selecting the authored-effect payload, as the single-version rule on this PR requires. The package section, batch digests, and the acceptance rows now describe that format, including that an effect package carries no obstruction_coordinate and its footprint contract uses the v1 footprint-law domain.
|
@coderabbitai review |
|
@codex review please, focus on the version-scoped failure-name map (closed, no pass-through), removal of obstruction_coordinate from effect packages while fixed-profile packages keep identical bytes, and that the architecture doc now matches the single v1 package format |
|
|
Codex Review: Didn't find any major issues. Delightful! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
receipt_correlations_for_current_basis is called only by the trusted runtime host that native_rule_bootstrap enables, so trusted_runtime builds without it warned that the method is never used. Gate it on both features, as on #921.
Brings in count (#929) and proven-range slice and subtraction (#931). edict_pure::infer and check_predicate keep #921's crate visibility and take main's proof parameter; the effect instruction relation passes Proof::none(), so runtime slices and subtractions in effect programs still need literal operands until effect programs carry their proofs. Provider components and goldens take main's set until re-promotion.
The merged provider combines main's promoted components with #921's semantic sources, so the package manifest and the provider digest goldens move to that combination until the components are re-promoted.
Promoted from det-gates run 39606253948, whose two candidates were byte-identical. Lowerer sha256:498d2c26 (496,879 bytes); the verifier is unchanged at sha256:e1426a80. Provider sha256:17cca54e.
The merge introduced a static empty cap table for Proof::none(), which Echo's ban on globals refuses. Proof::new takes caps and facts the caller owns; the effect instruction relation passes an empty table it creates per check.
Goal
Implement the generic exact-parent evaluation-to-effect bridge needed by compiler-authored operations. Echo must witness actual reads, authenticate the package's laws, interpret typed instructions, derive its own patch, and publish atomically with receipts/WAL and fresh-engine recovery of the original decision. Application algorithms remain authored outside Echo.
Plan
Current status
Checkpoint
6d4fb3e9applies two of the owner's rulings. Failure names (option i): on the authored route the catalog namesecho.dpo@1.node-atom-read's failures with Edict ABI identifiers (atomMissing,atomRequired,atomTypeMismatch,atomByteBoundExceeded). One Echo-owned table,edict_effects::failure_names, keyed by intrinsic and catalog name together, pins each to the runtime tag Echo records (echo.atom-missing/v1, ...). The read ABI check requires exactly that set and its authority classes; execution translates lowered arms through the table and refuses missing, unknown, repeated or tag-spelled names with no pass-through. Jim's adapter aliasmissingmaps toatomMissing, recorded asecho.atom-missing/v1; application aliases never enter Echo's table. The bounded-read route keeps its runtime-tag mappings. Obstruction header (option 3): an authored effect package no longer carriesobstruction_coordinate; its embedded exports declare every obstruction and admission still checks each arm's declaration and authority. The effect-package shape, its program kind and its retained control exist only on this unreleased branch (none reached main or a tag), so the shape is amended in place. The sharedecho.operation-package/v1decoder now requires the header for fixed-profile packages and forbids it for effect packages, so fixed-profile bytes and identities are unchanged. The lowerer component was promoted from det-gates run 39585969546 (two byte-identical candidates, 489,413 bytes, SHA-2566880fe89...cea2); the verifier is unchanged. Provider identity issha256:6287e569...7600.The closed runtime-intrinsic catalog family (exact six, 11-field schema, explicit guard fields, failure contract with pinned runtime tags) is implemented and tested on local branch
wip/runtime-intrinsics-catalogbut not landed here: adding entries to the shipped catalog changes theecho.dpo@1target profile's identity, which every retained real-compiler capture in the lowerer and verifier suites pins (about 80 tests, about 30 fixture files, and the host witness). Landing it needs those captures recompiled through Edict against the new provider.Current data-checker checkpoint
cd75aa04makesExecutableOperationPackage::prepareavailable withouttrusted_runtimeornative_rule_bootstrap. It compiles the same current effect/Core/Target/profile checker, keeps trusted helper modules private in that build, and retains all owner-constructor gates. Fresh outer pins cannot admit invalid embedded compiler bytes or a substituted Core closure. Preparation does not authenticate source-to-Core compilation, select an authorized release pin, install a package, or grant invocation rights.Validation passed 97 tests with trusted-host features and the three publication controls with those features disabled. An external client compiles against the preparation API; imports of
TrustedRuntimeHostand the private frame helper are separately refused. Strict Clippy passed in default, trusted-host and bootstrap-only configurations; barewasm32-unknown-unknownlibrary checking and warnings-as-errors documentation generation passed with Rust 1.96. Full SPDX, format and diff checks passed. The fixtures remain explicitly synthetic, and this is not a component build/audit or public compiler proof.Public effect producer/verifier integration remains unfinished. Reusing the checker in the provider guest requires a coherent authenticated toolchain update: the runtime requires Rust 1.96, while component builds remain pinned to Rust 1.90. The previous
09239c7chosted run failed four checks: the lowerer build and G4 comparison rejected the stale checked component, the actual-host generated-helper comparison failed, and the downstream evidence gate failed. Current-head hosted checks are pending. No merge readiness is claimed.Schema checkpoint
09239c7cadmits the native factory's current effect envelope through the provider's owningecho-operation-packageroot. Anchored and effect envelopes reuse a common current field group. Effect closure metadata has no duplicate outer lawpack; anchored projection/lawpack requirements remain intact. The program remains opaque to schema admission. A malformed-program control passes metadata admission but is refused by runtime preparation even with a fresh package pin.A synthetic factory-produced wire control first passed the current runtime decoder and failed owning-root admission, then passed both after the schema change. Current-schema tests cover required fields, 32-byte identities, budget/coordinate types, closed envelopes, unsupported schema versions and extra outer lawpack metadata. Native related validation passes 168 tests across 13 suites with one ignored test, plus strict changed-target Clippy, full SPDX checking, formatting and all artifact/package/asset freshness checks. Schema, helper, provenance, package metadata and digest goldens were regenerated together. The provider schema is now
8e4f82bb48bab1bdc11f22b3c37de49edaf87028aa365b15ef061ac07f990a10.The native
effect_publication::encode_effect_publicationfactory preserves the retained compiler bundle and derives embedded identities. It produces untrusted proposals, is not called by the public lowerer yet, and does not verify compiler correspondence, graph-law semantics, policy authority or execution. Synthetic controls are not public compiler outputs or independent verifier results. Runtime decoder dependencies/features remain dev-only for the producer.The preceding catalog-transport checkpoint requires explicit bounded
intrinsicCatalogbytes and checks canonical encoding, root shape and the exact owner-framed reference in the selected target profile. Its refusal controls remain green. Existing exact profile admission and catalog-to-export nominal agreement remain enforced.Publication boundary: the checked lowerer component binds the current provider schema
8e4f82bb...0a10. Main #925 is merged at c4745f8 with all six post-merge workflows green.The PR remains draft. Genuine public effect compilation, validated public producer integration, independent verification, complete authenticated profile/catalog delivery and the remaining runtime acceptance scope below are unfinished. Parallel historical contract/configuration/Target-IR paths remain unfinished under the user's one-current-version policy. No package generated by the public effect compiler path or installed execution is claimed.
One current publication, program sum, semantic closure, admission policy/token, installed record/catalog, invocation and recovery collection serve fixed and authored-effect program kinds. Owner invocation admission independently checks installed meaning, authority/grants, input binding, budgets and the actual parent. Installation recovery works, including fixed-program Action recovery with an effect installation present in either installation order. Superseded structures and decoders were removed without compatibility aliases. The user confirmed there are no saved histories to preserve; historical versions belong only in separate migration tools.
The exact
echo.compiler-produced-effect-program/v1bundle binds canonical Core, ordered Target IR and exports. Bodies with effects additionally require canonical source, lawpack, adapter, target-profile and intrinsic-catalog artifacts. Preparation checks their hash chain, selected intent/output, shared constraints/budgets/basis, complete instruction order, lexical references, adapter authorization and mapped failures. Imported declarations bind to exported definitions; shared inference preserves nominal identities. Concrete single-argument signatures and fault contracts must agree with the catalog. The implemented node-read ABI independently fixes three 32-byte address fields, a bounded direct byte result and four fault tags/classes. The five mutation emitters below are also recognized; further intrinsic families, polymorphism and positional argument unpacking remain unsupported.Private ordered authored evaluation now runs through
EffectEvaluationFrame::evaluate_effect. It requires a runtime-bound frame, exact program/frame footprint-law equality and a valid typed aperture. Typed let/read/require instructions reuse the existing expression/helper evaluator, runtime value checks, cumulative meter and real typed recording adapter. Core/program/frame resource ceilings intersect. Successful node/atom pairs must satisfy the prepared graph schema. False requirements evaluate their terminal payloads; supported zero-argument mapped failure constructors yield their authored source-context name and empty payload. Refusals terminate the frame and retain completed dependencies. Successful calls retain cumulative usage and observations.Five compiler-targeted mutation emitters now buffer typed
EnsureNode,CreateNode,ReplaceAtom,EnsureEdgeandReplaceEdgeintents. They require the explicitcontinuum.profile.graph-effects/v1Core/Target profile, concrete single-record arguments and empty-record results. The runtime fixes their input fields and 32-byte identities independently of metadata, keeps node and atom types distinct, and retains replacement comparisons. Each emission atomically admits one step, 280 logical row bytes and fixed write bytes: 64 plus atom payload length for node/atom effects, or 128 for edges. The already charged payload moves into the typed intent without copying. Only a successful whole authored operation retains its entire buffer; guard/resource/output failure discards its partial intents. Whole authored evaluation requires an unused frame and ends evaluation on success, so another component/program cannot contribute work or append to the result. Read-only profiles cannot authorize emission. The frame exposes a read-only data view, with no public entry point accepting caller-constructed intents as evidence. Emission reads no target state and modifies no frontier, but its fixed write-byte charge applies even when Ensure later resolves identically. A whole operation may emit at most 1,024 effects, including duplicates and later no-ops. The next emission refuses without exposing a partial buffer, while retaining prior successful charges. Proposal resolution still determines actual write slots.A consuming
into_effect_evaluationcrossing now returns one opaqueCompletedEffectEvaluation, retaining the exact producing program identity, canonical-input basis binding, actual output, emitted intents and actual recorded-read image. Program identity and input-basis recipes are shared with the existing program identity and invocation admission code. The input binding must equal the runtime parent's application basis. Changing otherwise valid input cannot yield completion under its old binding. Output storage is borrowed during evaluation and moved into completion with the intent buffer; it is not cloned. Unused/failed/mixed frames and bounded read-export failures cannot deliver this completed value. The sole full parent and usage counters come from the read image. This is execution-origin evidence, not installed-package authority or independent compiler/verifier approval.The runtime owner consumes a completed evaluation and independently admitted invocation to derive a counterfactual patch at the exact unchanged full parent. Both admission and completed evaluation must carry this owner's private process-local evaluation authority, in addition to installation/program/parent checks. An adversarial witness reproduced foreign completion crossing when parent tuples matched but detached store contents differed. The frame now moves its owner binding into opaque completion, and derivation refuses that foreign origin before using its data. Matching reachable-state roots do not establish equal stores. Owned-parts host reconstruction preserves the authority; it is not serialized recovery evidence.
All five effects have operation-shape witnesses. Validation enforces schema, content/mutable-slot identity, comparisons, endpoints, typed permissions and resolved write limits. Idempotent Ensure emits no writes but retains emission costs and still requires write permission. Validation usage includes successful evaluation and resolution prefixes. Prior-read reachability uses canonical read-image slot order. Descendant mutation tests verify one- and two-level alpha-portal dependency slots and exact charges, with forbidden-owner/beta refusal witnesses. Read-only authored work retains its two observed slots in an empty derived patch without recharging. Independent program and application-basis substitutions refuse under the same owner. Competing-failure witnesses cover schema/identity/footprint/precondition phase precedence.
This remains private whole-parent derivation. No operations are applied and installed authored-effect Action dispatch still refuses. Scoped-history admission, same-Tick conflicts, physical allocation guarantees, retained decisions and original-decision recovery remain open. Additional adversarial coverage and the full scoped-history/composition contract remain required before treating the bridge as complete.
The public configuration boundary now recognizes an explicit
edict-effect-program/v1declaration with nonempty encoded graph-schema/footprint-law payloads, identity law 1, bounded input/result/allocation ceilings and explicit I/O/step budget. A fresh unmodified Edict build at1d287efand admitted source-function provider candidates give a controlled witness: identical authored source/lawpack/configuration hashes refuse at05-target-configurationbefore this schema change and reachProviderLowererRefused / UnsupportedSemanticsafterward. An existing public bounded-read control still succeeds with package and independent verifier-report bytes identical to the original provider. No emitted Core or Target IR is rewritten. This does not produce or verify a generic authored-effect package: the lowerer route and target intrinsic/profile/resource work remain open. Existing fixed-operation v1/v2 configuration dispatch is also still noncompliant with the single-current-version rule and must be consolidated.Producer-boundary checkpoint validation: 69 tests across eight Wesley generation/schema/package/corpus suites pass, along with strict changed-target Clippy, formatting/SPDX/feature scheduling and all three artifact/package/assets exact checks. Generated schema, provenance, package manifest and consumer golden pins are refreshed together. Prior runtime-owner checkpoint validation below covers the unchanged runtime code, not a new full core run.
The retained raw public capture has inconsistent lawpack pins, a prior Target IR profile reference and a catalog declaring only the original replace fixture. Positive tests use an explicitly synthetic, coherently repinned read catalog and artifact chain. They do not prove genuine public effect compilation or independent verifier acceptance. Complete source-to-Core proof, graph-schema/export authority, target schema/profile resources, general intrinsic contracts, constructor payload/taxonomy authority and cost/footprint/configuration calculus remain open. Complete pure-main/projection refinement-aware static typing also remains open.
The approved proposal requires emission charges and a 1,024-effect ceiling. The buffering prototype incorrectly deferred write-byte charging and omitted the count ceiling. Those corrected semantics remain enforced during private mutation validation/patch derivation. Fixed step/write/row admission is atomic; a write-budget or row-reservation failure commits none of that emission charge. Earlier expression work and successful emission charges remain consumed even when the operation later fails.
Validation for this checkpoint: all 80 package tests pass. The cross-owner completion witness failed before the owner binding and passed after it. Final-source owner/host-enabled core validation passed 2,164 primary tests, zero failures and nine ignored across 100 primary Cargo groups, including 30 passing doctests and six ignored. Six child-process test results also pass, yielding a raw log total of 2,170 passes across 106 result groups. The count audit selects each top-level harness result once. Final strict all-target owner/host Clippy, formatting, global-state/nondeterminism/serialization guards, SPDX and feature-test scheduling pass.
receipt_correlations_for_current_basisis now gated like its only non-test caller, so trusted-runtime-only builds are warning-free. New derivation internals are gated consistently with the runtime-owner host. The owner/host-enabled strict all-target configuration passes. Fresh hosted checks must finish for this pushed head. The PR remains a draft.The genuine flat-text capacity probe at
b46455csucceeded through 65,536 bytes but refused at 1,048,576 bytes under the tested allocation/shared-step ceilings. Full-size acceptance, remaining language capabilities, complete AVL acceptance and the final Jim dependency update remain part of the cross-repository objective.